package com.wdh.networklibrary.utils;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.graphics.Color;
import android.os.Build;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;

import androidx.appcompat.app.AppCompatDelegate;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 是否debug
 */

public class AppUtils {
    private static Boolean isDebug = null;

    public static boolean isDebug() {
        return isDebug == null ? false : isDebug.booleanValue();
    }

    /**
     * Sync lib debug with app's debug value. Should be called in module Application
     */
    public static void syncIsDebug(Context context) {
        if (isDebug == null) {
            isDebug = context.getApplicationInfo() != null &&
                    (context.getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
        }
    }


    /**
     * 隐藏键盘
     */
    public static void hideKeyBoard(View view) {
        InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
        if (imm.isActive()) {
            imm.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0);
        }
    }


    /*
     * 将时间转换为时间戳
     */
    @SuppressLint("SimpleDateFormat")
    public static String dateToStamp(String s) throws java.text.ParseException {
        String res;
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = simpleDateFormat.parse(s);
        long ts = date.getTime();
        res = String.valueOf(ts);
        return res;
    }

    /*
     * 将时间戳转换为时间
     */
    @SuppressLint("SimpleDateFormat")
    public static String stampToDate(String s) {
        String res;
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        long lt = Long.valueOf(s);
        Date date = new Date(lt);
        res = simpleDateFormat.format(date);
        return res;
    }






    private static String userImage;

    public static String getUserImage() {
        return userImage == null ? "" : userImage;
    }

    public static void setUserImage(String userImage) {
        AppUtils.userImage = userImage;
    }

    /**
     * 是否夜间模式
     */
    public static boolean isNight() {
        return (int) SharedInfo.getInstance().getValue(Constant.isNight, 1) == AppCompatDelegate.MODE_NIGHT_YES;
    }

//    /**
//     * 验证手机格式
//     */
//    public static boolean isPhone(String phone) {
//        /*
//         * 电信
//         * 中国电信手机号码开头数字
//         * 2G/3G号段（CDMA2000网络）133、153、180、181、189
//         * 4G号段 177
//         *
//         * 联通
//         * 中国联通手机号码开头数字
//         * 2G号段（GSM网络）130、131、132、155、156
//         * 3G上网卡145
//         * 3G号段（WCDMA网络）185、186
//         * 4G号段 176、185[1]
//         *
//         * 移动
//         * 中国移动手机号码开头数字
//         * 2G号段（GSM网络）有134x（0-8）、135、136、137、138、139、150、151、152、158、159、182、183、184。
//         * 3G号段（TD-SCDMA网络）有157、187、188
//         * 3G上网卡 147
//         * 4G号段 178
//         * 补充
//         *
//         * 14号段以前为上网卡专属号段，如中国联通的是145，中国移动的是147等等。
//         * 170号段为虚拟运营商专属号段，170号段的 11 位手机号前四位来区分基础运营商，其中 “1700” 为中国电信的转售号码标识，“1705” 为中国移动，“1709” 为中国联通。
//         */
//        if (TextUtils.isEmpty(phone)) {
//            return false;
//        }
//        phone = phone.replaceAll("\\s*", "");
//        Pattern regex = Pattern.compile(REGEX_MOBILE_EXACT);
//        Matcher matcher = regex.matcher(phone);
//        return matcher.matches();
//    }
//
//    /**
//     * 验证用户名格式
//     */
//    public static boolean isUserName(String name) {
//        if (TextUtils.isEmpty(name)) {
//            return false;
//        }
//        Pattern regex = Pattern.compile(REGEX_USERNAME_DJG);
//        Matcher matcher = regex.matcher(name);
//        return matcher.matches();
//    }


    public static void setMargins(View v, int l, int t, int r, int b) {
        if (v.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {
            ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
            p.setMargins(l, t, r, b);
            v.requestLayout();
        }
    }

    //透明状态栏
    public static void fullScreen(Activity activity) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                //5.x开始需要把颜色设置透明，否则导航栏会呈现系统默认的浅灰色
                Window window = activity.getWindow();
                View decorView = window.getDecorView();
                //两个 flag 要结合使用，表示让应用的主体内容占用系统状态栏的空间
                int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
                decorView.setSystemUiVisibility(option);
                window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
                window.setStatusBarColor(Color.TRANSPARENT);
                //导航栏颜色也可以正常设置
                window.setNavigationBarColor(Color.TRANSPARENT);
            } else {
                Window window = activity.getWindow();
                WindowManager.LayoutParams attributes = window.getAttributes();
                int flagTranslucentStatus = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
                int flagTranslucentNavigation = WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
                attributes.flags |= flagTranslucentStatus;
                attributes.flags |= flagTranslucentNavigation;
                window.setAttributes(attributes);
            }
        }
    }

}
